package cn.kgc.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 读取数据库的属性文件，获取数据库连接信息
 */
//如何让用户只能创建一个ConfigManager？单例模式的两种实现方式：饿汉方式 懒汉方式(线程不安全)

    //普通模式
    //ConfigManager c = new ConfigManager();
    //c.getString("jdbc.driver");

    //单例模式 懒汉方式
    //（1）把构造方法私有
    //（2）程序提供给别人唯一对象
    //ConfigManager.getInstance().getString("jdbc.driver");
public class ConfigManager {
    private static ConfigManager configManager;
    //饿汉方式
//    private static ConfigManager configManager = new ConfigManager();
    private Properties properties;

    private ConfigManager(){
        String configFile = "mysql.properties";
        InputStream in = ConfigManager.class.getClassLoader().getResourceAsStream(configFile);
        properties = new Properties();
        try {
            properties.load(in);
            if (in != null){
                in.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //提供给别人一个唯一的ConfigManager对象 懒汉方式 线程不是安全的，可以加上 synchronized 解决
    public static synchronized ConfigManager getInstance(){
        if (configManager == null){
            configManager = new ConfigManager();
        }
        return configManager;
    }

    //饿汉方式
//    public static ConfigManager getInstance(){
//        return configManager;
//    }

    //根据属性文件中的键获得对应的值
    public String getString(String key){
        return properties.getProperty(key);
    }
}
